const fs = require('fs');
const path = require('path');


async function clearCache() {
 const cacheDir = path.join(__dirname, '../cache');
 
 // 检查目录是否存在
 await fs.access(cacheDir, fs.constants.F_OK, (err) => {
  if (err) {
   // 目录不存在，创建目录
   fs.mkdir(cacheDir, { recursive: true }, (mkdirErr) => {
    if (mkdirErr) {
     console.error('创建目录时出错:', mkdirErr);
    } else {
     console.log('cache 目录创建成功');
    }
   });
  } else {
   // 目录存在，清空目录
   fs.readdir(cacheDir, (readErr, files) => {
    if (readErr) {
     console.error('读取目录时出错:', readErr);
    } else {
     files.forEach((file) => {
      const filePath = path.join(cacheDir, file);
      fs.stat(filePath, (statErr, stats) => {
       if (statErr) {
        console.error('获取文件状态时出错:', statErr);
       } else {
        if (stats.isFile()) {
         // 删除文件
         fs.unlink(filePath, (unlinkErr) => {
          if (unlinkErr) {
           console.error('删除文件时出错:', unlinkErr);
          } else {
           console.log(`文件 ${file} 已删除`);
          }
         });
        } else if (stats.isDirectory()) {
         // 删除子文件夹
         fs.rmdir(filePath, { recursive: true }, (rmdirErr) => {
          if (rmdirErr) {
           console.error('删除子文件夹时出错:', rmdirErr);
          } else {
           console.log(`子文件夹 ${file} 已删除`);
          }
         });
        }
       }
      });
     });
     console.log('cache 目录已清空');
    }
   });
  }
 });    
}



module.exports = {clearCache};